#ifndef HISTOGRAMA_H
#define HISTOGRAMA_H

#include <inttypes.h>
#include <QDebug>

#define LEDS_METRO 107
#define PROB_MULT_LEDS 100

class histograma
{
public:
    histograma();

    float getPosicionLinea(uint32_t *valoresBarras, float desplazamiento);
    float getPosicionLinea2(uint32_t * valoresBarras, float angulo, float velocidad, float periodo);
    void setCalibraciones(uint16_t *frontalO, uint16_t *frontalC, uint16_t *traseraO, uint16_t *traseraC);
    float *getHistograma();

private:
    float valoresHistograma[40];
    uint16_t Calibraciones_Frontal_Oscuro[24];
    uint16_t Calibraciones_Trasera_Oscuro[16];
    uint16_t Calibraciones_Ponderad_Oscuro[24];
    uint16_t Calibraciones_Frontal_Claro[24];
    uint16_t Calibraciones_Trasera_Claro[16];
    uint16_t Calibraciones_Ponderad_Claro[24];
    uint32_t Calibraciones_Frontal_OK[24];
    uint32_t Calibraciones_Trasera_OK[16];
    uint32_t Calibraciones_Ponderad_OK[24];
    int indexMaxHist;
    float posicionLinea;
    bool hayLinea;

    float generarConfianza(uint32_t *valoresBarras, int indice, int32_t media);
    float generarConfianza2(uint32_t *medidaPonderada, int i);
};

#endif // HISTOGRAMA_H
